←Select platform

GetValue<T>(DicomElement,T,out T) Method

Summary

Returns the value of a DICOM element

Syntax
C#
VB
C++
public DicomDataSet GetValue<T>( 
   DicomElement element, 
   T defaultValue, 
   out T value 
) 
Public Overloads Function GetValue(Of T)( _ 
   ByVal element As DicomElement, _ 
   ByVal defaultValue As T, _ 
   ByRef value As T _ 
) As DicomDataSet 
public: 
DicomDataSet^ GetValuegeneric<typename T> 
(  
   DicomElement^ element, 
   T^ defaultValue, 
   [Out] T^ value 
)  

Parameters

element
an item in the data set

defaultValue
a value of type T that is returned if the actual value cannot be retrieved.

value
reference to an object that will be updated with the value.

Type Parameters

T
specifies the type of the value to return

Return Value

a reference to the DicomDataSet

Remarks

For information on this method, see GetValue.

Example

This example will create a DICOM sequence, and then read back values from the sequence

C#
VB
using Leadtools; 
using Leadtools.Dicom; 
 
///  
private void DicomDataSet_BeginEditSequenceExample() 
{ 
   // The methods below all return a 'this' pointer so that they can be chained together (a 'fluent' interface) 
   // BeginEditItem has an index item to allow you to specify which item to edit (defaults to 0). 
   // BeginReadItem should also have this overload. 
   // 
 
   // Create a DicomDataSet  
   DicomDataSet ds = new DicomDataSet(); 
 
   // *************************************************** 
   // *** Example 1  
   // *************************************************** 
 
   // Create a sequence with two items 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem() 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- first item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- first item") 
        .EndEditItem() 
        .BeginEditItem() 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now add a third item to the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem(2) 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now update the second item in the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem(1) 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Read the first item in the sequence 
   string sRequestedProcedureID; 
   string sScheduledProcedureStepID; 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem() 
         .GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID) 
         .GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID) 
      .EndReadItem() 
     .EndReadSequence(); 
 
   // Read the third item in the sequence 
   sRequestedProcedureID = string.Empty; 
   sScheduledProcedureStepID = string.Empty; 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem(2) 
         .GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID) 
         .GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID) 
      .EndReadItem() 
     .EndReadSequence(); 
 
   // *************************************************** 
   // *** Example 2  
   // *************************************************** 
 
   // This example creates a sequence inside another sequence 
   // Add a per-frame functional gropus sequence with two items 
   ds.BeginEditSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
        .BeginEditItem() 
               .BeginEditSequence(DicomTag.FrameVOILUTSequence) 
                     .BeginEditItem() 
                        .InsertElementAndSetValue(DicomTag.WindowCenter, 32000) 
                        .InsertElementAndSetValue(DicomTag.WindowWidth, 64000) 
                     .EndEditItem() 
                     .BeginEditItem() 
                        .InsertElementAndSetValue(DicomTag.WindowCenter, 100) 
                        .InsertElementAndSetValue(DicomTag.WindowWidth, 200) 
                     .EndEditItem() 
               .EndEditSequence() 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now read the per-frame functional groups sequence with two items 
   string sWindowCenter1; 
   string sWindowWidth1; 
   string sWindowCenter2; 
   string sWindowWidth2; 
   ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
      .BeginReadItem() 
         .BeginReadSequence(DicomTag.FrameVOILUTSequence) 
            .BeginReadItem() 
                .GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter1) 
                .GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth1) 
            .EndReadItem() 
            .BeginReadItem() 
                .GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter2) 
                .GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth2) 
            .EndReadItem() 
         .EndReadSequence() 
      .EndReadItem() 
   .EndReadSequence(); 
 
   ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "test.dcm"), DicomDataSetSaveFlags.None); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Dicom 
 
'''  
Private Sub DicomDataSet_BeginEditSequenceExample() 
   ' The methods below all return a 'this' pointer so that they can be chained together (a 'fluent' interface) 
   ' BeginEditItem has an index item to allow you to specify which item to edit (defaults to 0). 
   ' BeginReadItem should also have this overload. 
   ' 
 
   ' Create a DicomDataSet  
   Dim ds As DicomDataSet = New DicomDataSet() 
 
   ' *************************************************** 
   ' *** Example 1  
   ' *************************************************** 
 
   ' Create a sequence with two items 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) _ 
      .BeginEditItem() _ 
         .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- first item") _ 
         .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- first item") _ 
      .EndEditItem() _ 
      .BeginEditItem() _ 
         .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item") _ 
         .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item") _ 
      .EndEditItem() _ 
    .EndEditSequence() 
 
   ' Now add a third item to the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) _ 
      .BeginEditItem(2) _ 
         .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item") _ 
         .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item") _ 
      .EndEditItem() _ 
   .EndEditSequence() 
 
   ' Now update the second item in the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) _ 
      .BeginEditItem(1) _ 
         .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated") _ 
         .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated") _ 
      .EndEditItem() _ 
   .EndEditSequence() 
 
   ' Read the first item in the sequence 
   Dim sRequestedProcedureID As String = String.Empty 
   Dim sScheduledProcedureStepID As String = String.Empty 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) _ 
      .BeginReadItem() _ 
         .GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) _ 
         .GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID) _ 
      .EndReadItem() _ 
   .EndReadSequence() 
 
   ' Read the third item in the sequence 
   sRequestedProcedureID = String.Empty 
   sScheduledProcedureStepID = String.Empty 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) _ 
      .BeginReadItem(2) _ 
         .GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) _ 
         .GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID) _ 
      .EndReadItem() _ 
   .EndReadSequence() 
 
   ' *************************************************** 
   ' *** Example 2  
   ' *************************************************** 
   ' This example creates a sequence inside another sequence 
   ' Add a per-frame functional gropus sequence with two items 
   ds.BeginEditSequence(DicomTag.PerFrameFunctionalGroupsSequence) _ 
      .BeginEditItem() _ 
         .BeginEditSequence(DicomTag.FrameVOILUTSequence) _ 
            .BeginEditItem() _ 
               .InsertElementAndSetValue(DicomTag.WindowCenter, 32000) _ 
               .InsertElementAndSetValue(DicomTag.WindowWidth, 64000) _ 
            .EndEditItem() _ 
            .BeginEditItem() _ 
               .InsertElementAndSetValue(DicomTag.WindowCenter, 100) _ 
               .InsertElementAndSetValue(DicomTag.WindowWidth, 200) _ 
            .EndEditItem() _ 
         .EndEditSequence() _ 
      .EndEditItem() _ 
   .EndEditSequence() 
 
   ' Now read the per-frame functional groups sequence with two items 
   Dim sWindowCenter1 As String = String.Empty 
   Dim sWindowWidth1 As String = String.Empty 
   Dim sWindowCenter2 As String = String.Empty 
   Dim sWindowWidth2 As String = String.Empty 
   ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence) _ 
      .BeginReadItem() _ 
         .BeginReadSequence(DicomTag.FrameVOILUTSequence) _ 
            .BeginReadItem() _ 
               .GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter1) _ 
               .GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth1) _ 
            .EndReadItem() _ 
            .BeginReadItem() _ 
               .GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter2) _ 
               .GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth2) _ 
            .EndReadItem() _ 
         .EndReadSequence() _ 
      .EndReadItem() _ 
   .EndReadSequence() 
 
 
   ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "test.dcm"), DicomDataSetSaveFlags.None) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Dicom; 
using Leadtools.Examples; 
 
private void DicomDataSet_BeginEditSequenceExample(Stream outputStream) 
{ 
   // The methods below all return a 'this' pointer so that they can be chained together (a 'fluent' interface) 
   // BeginEditItem has an index item to allow you to specify which item to edit (defaults to 0). 
   // BeginReadItem should also have this overload. 
   // 
 
   // Create a DicomDataSet  
   DicomDataSet ds = new DicomDataSet(); 
 
   // *************************************************** 
   // *** Example 1  
   // *************************************************** 
 
   // Create a sequence with two items 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem() 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- first item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- first item") 
        .EndEditItem() 
        .BeginEditItem() 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now add a third item to the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem(2) 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now update the second item in the sequence 
   ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
        .BeginEditItem(1) 
           .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated") 
           .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated") 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Read the first item in the sequence 
   string sRequestedProcedureID; 
   string sScheduledProcedureStepID; 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem() 
         .GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID) 
         .GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID) 
      .EndReadItem() 
     .EndReadSequence(); 
 
   // Read the third item in the sequence 
   sRequestedProcedureID = string.Empty; 
   sScheduledProcedureStepID = string.Empty; 
   ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem(2) 
         .GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID) 
         .GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID) 
      .EndReadItem() 
     .EndReadSequence(); 
 
   // *************************************************** 
   // *** Example 2  
   // *************************************************** 
 
   // This example creates a sequence inside another sequence 
   // Add a per-frame functional gropus sequence with two items 
   ds.BeginEditSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
        .BeginEditItem() 
               .BeginEditSequence(DicomTag.FrameVOILUTSequence) 
                     .BeginEditItem() 
                        .InsertElementAndSetValue(DicomTag.WindowCenter, 32000) 
                        .InsertElementAndSetValue(DicomTag.WindowWidth, 64000) 
                     .EndEditItem() 
                     .BeginEditItem() 
                        .InsertElementAndSetValue(DicomTag.WindowCenter, 100) 
                        .InsertElementAndSetValue(DicomTag.WindowWidth, 200) 
                     .EndEditItem() 
               .EndEditSequence() 
        .EndEditItem() 
     .EndEditSequence(); 
 
   // Now read the per-frame functional groups sequence with two items 
   string sWindowCenter1; 
   string sWindowWidth1; 
   string sWindowCenter2; 
   string sWindowWidth2; 
   ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
      .BeginReadItem() 
         .BeginReadSequence(DicomTag.FrameVOILUTSequence) 
            .BeginReadItem() 
                .GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter1) 
                .GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth1) 
            .EndReadItem() 
            .BeginReadItem() 
                .GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter2) 
                .GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth2) 
            .EndReadItem() 
         .EndReadSequence() 
      .EndReadItem() 
   .EndReadSequence(); 
 
   ds.Save(outputStream, DicomDataSetSaveFlags.None); 
 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Dicom 
 
Private Sub DicomDataSet_BeginEditSequenceExample(ByVal outputStream As Stream) 
   ' The methods below all return a 'this' pointer so that they can be chained together (a 'fluent' interface) 
   ' BeginEditItem has an index item to allow you to specify which item to edit (defaults to 0). 
   ' BeginReadItem should also have this overload. 
   ' 
 
   ' Create a DicomDataSet  
   Dim ds As DicomDataSet = New DicomDataSet() 
 
   ' *************************************************** 
   ' *** Example 1  
   ' *************************************************** 
 
   ' Create a sequence with two items 
   With ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
      .BeginEditItem() 
      .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- first item") 
      .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- first item") 
      .EndEditItem() 
      .BeginEditItem() 
      .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item") 
      .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item") 
      .EndEditItem() 
      .EndEditSequence() 
   End With 
 
   ' Now add a third item to the sequence 
   With ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
      .BeginEditItem(2) 
      .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item") 
      .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item") 
      .EndEditItem() 
      .EndEditSequence() 
   End With 
 
   ' Now update the second item in the sequence 
   With ds.BeginEditSequence(DicomTag.RequestAttributesSequence) 
      .BeginEditItem(1) 
      .InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated") 
      .InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated") 
      .EndEditItem() 
      .EndEditSequence() 
   End With 
 
   ' Read the first item in the sequence 
   Dim sRequestedProcedureID As String = String.Empty 
   Dim sScheduledProcedureStepID As String = String.Empty 
   With ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem() 
      .GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) 
      .GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID) 
      .EndReadItem() 
      .EndReadSequence() 
   End With 
 
   ' Read the third item in the sequence 
   sRequestedProcedureID = String.Empty 
   sScheduledProcedureStepID = String.Empty 
   With ds.BeginReadSequence(DicomTag.RequestAttributesSequence) 
      .BeginReadItem(2) 
      .GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) 
      .GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID) 
      .EndReadItem() 
      .EndReadSequence() 
   End With 
 
   ' *************************************************** 
   ' *** Example 2  
   ' *************************************************** 
 
   ' This example creates a sequence inside another sequence 
   ' Add a per-frame functional gropus sequence with two items 
   With ds.BeginEditSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
      .BeginEditItem() 
      .BeginEditSequence(DicomTag.FrameVOILUTSequence) 
      .BeginEditItem() 
      .InsertElementAndSetValue(DicomTag.WindowCenter, 32000) 
      .InsertElementAndSetValue(DicomTag.WindowWidth, 64000) 
      .EndEditItem() 
      .BeginEditItem() 
      .InsertElementAndSetValue(DicomTag.WindowCenter, 100) 
      .InsertElementAndSetValue(DicomTag.WindowWidth, 200) 
      .EndEditItem() 
      .EndEditSequence() 
      .EndEditItem() 
      .EndEditSequence() 
   End With 
 
   ' Now read the per-frame functional groups sequence with two items 
   Dim sWindowCenter1 As String = String.Empty 
   Dim sWindowWidth1 As String = String.Empty 
   Dim sWindowCenter2 As String = String.Empty 
   Dim sWindowWidth2 As String = String.Empty 
   With ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence) 
      .BeginReadItem() 
      .BeginReadSequence(DicomTag.FrameVOILUTSequence) 
      .BeginReadItem() 
      .GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter1) 
      .GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth1) 
      .EndReadItem() 
      .BeginReadItem() 
      .GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter2) 
      .GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth2) 
      .EndReadItem() 
      .EndReadSequence() 
      .EndReadItem() 
      .EndReadSequence() 
   End With 
 
   ds.Save(outputStream, DicomDataSetSaveFlags.None) 
End Sub 

Requirements

Target Platforms

Help Version 20.0.2020.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom Assembly